<?php
class admin_controller extends Controller
{
	// Constructeur
	public function admin_controller()
	{
		parent::controller();
		$this->setNoIndex(true);
		$this->setTitle("@Blog &lt;Backoffice&gt;");
		$this->addCSSFile("admin");

		if(isset($_SESSION['connexion']))
		$this->_view->_isLogged = true;
		else
		$this->_view->_isLogged = false;
	}

	// Page par défaut
	public function init()
	{
		$this->addJSFile("admin");
		$this->_view->_loginForm = $this->addPartialView("admin", "connectForm");
	}

	// Formulaire de connexion/déconnexion
	public function connectForm()
	{
		$this->disableLayout();
		if(isset($_GET['msg']))
		{
			$this->_view->_msg = $_GET['msg'];
		}
	}

	// Valide la connexion
	public function connect()
	{
		$users = new Gen_user_Collection();
		$_SESSION['connexion'] = $users->authent($_POST['tb_login'],$_POST['tb_mdp']);
		if(!isset($_SESSION['connexion']))
		header("location:/error/errno=1");
		else
		{
			header('location:/admin');
		}
	}

	// Déconnecte l'utilisateur
	public function deco()
	{
		session_destroy();
		header("location:/admin");
	}

	// Affiche le formulaire d'ajout d'article
	public function addArticleView()
	{
		if(isset($_SESSION['connexion']))
		{
			$this->addJSFile("admin_add");
			$this->_view->_loginForm = $this->addPartialView("admin", "connectForm");
			$cats = new Categorie_Collection();
			$this->_view->_cats = $cats->liste(
			null,
			array ("name" => "asc")
			);
		}
		else
		header("location:/error/errno=2");

	}

	// Ajoute l'article
	public function addart()
	{
		$this->disableView();
		if(isset($_SESSION['connexion']))
		{
			$url = new Url();
			$bPub = 0;
			if(isset($_POST["cb_pub"]))
			$bPub = 1;

			$art = new Article_Modele(
			null, // ID null pour l'insertion
			$_POST["tb_title"], // titre
			$url->buildArticleUrl($_POST["tb_title"]),
			$_POST["tb_desc"], // description
			$_POST["tb_key"], // mots clefs
			$_POST["tb_content"], // contenu
			date("c"),//date
			null, //date de mise à jour
			$bPub, // est publié ?
			$_POST["cb_cat"]
			);

			$art->save();

			// Mise à jour du fichier sitemap
			//Sitemap::BUILD();

			header("location:/admin/msg=AddArtOk");
		}
		else
		header("location:/error/errno=2");


	}

	public function updateArticleView()
	{
		if(isset($_SESSION['connexion']))
		{
			$this->addJSFile("admin_update");
			$this->_view->_loginForm = $this->addPartialView("admin", "connectForm");

			// Récupération des articles
			$arts = new Article_Collection();
			$this->_view->_arts = $arts->liste(
			null,
			array ("title" => "asc")
			);

			// Récupération des catégories
			$cats = new Categorie_Collection();
			$this->_view->_cats = $cats->liste(
			null,
			array ("name" => "asc")
			);

			// Création des groupes
			$tab = array();
			foreach($this->_view->_cats as $c)
			{
				$tab_art = array();
				foreach($this->_view->_arts as $a)
				{
					if($a->get_categorieId() == $c->get_id())
					array_push($tab_art, $a);
				}
				if(sizeof($tab_art) > 0)
				$tab[$c->get_name()] = $tab_art;
			}
			$this->_view->_art_group = $tab;
		}
		else
		header("location:/error/errno=2");
	}

	public function addCategorieView(){
		if(isset($_SESSION['connexion']))
		{
			$this->addJSFile("admin_add");
			$this->_view->_loginForm = $this->addPartialView("admin", "connectForm");

			$colors = new Color_Collection();
			$this->_view->_colors = $colors->liste(
			null,
			array ("name" => "asc")
			);
		}
		else
		header("location:/error/errno=2");
	}

	public function addCategorie() {

		$this->disableView();

		if(isset($_SESSION['connexion']))
		{
			$cat = new Categorie_Modele(
			null, // ID null pour l'insertion
			$_POST["tb_title"], // titre
			$_POST["cb_color"] //couleur
			);

			$cat->save();

			// Mise à jour du fichier sitemap
			//Sitemap::BUILD();

			header("location:/admin/msg=AddCatOk");
		}
		else
		header("location:/error/errno=2");
	}

	public function getInfo()
	{
		$this->disableView();
		$id = $_GET['id'];
		$arts = new Article_Collection();
		$art = $arts->getByID($id);

		$url = new Url();

		return
		$art->get_id().'¤'.
		$art->get_title().'¤'.
		$art->get_categorieId().'¤'.
		$art->get_description().'¤'.
		$art->get_keywords().'¤'.
		$art->get_isPublished().'¤'.
		$art->get_url_title().'¤'.
		html_entity_decode($art->get_content());
			
	}

	public function getUrlPrev()
	{
		$this->disableView();
		$name = $_POST['name'];
		$url = new Url();
		return $url->buildArticleUrl($name);

	}

	public function updateart()
	{
		//$url = new Url();
		$arts = new Article_Collection();
		$art = $arts->getById($_POST["tb_id"]);
		//$art->set_title($_POST["tb_title"]);
		//$art->set_url_title($url->buildArticleUrl($_POST["tb_title"]));
		$art->set_categorieId($_POST["cb_cat"]);
		$art->set_description($_POST["tb_desc"]);
		$art->set_keywords($_POST["tb_key"]);
		$art->set_update_date(date("c"));
		$art->set_isPublished($_POST["cb_pub"]);
		$art->set_content($_POST["tb_content"]);
		$art->save();

		// Mise à jour du fichier sitemap
		//Sitemap::BUILD();
			
		header("location:/admin/msg=UpdArtOk");

	}

	public function delete()
	{
		$id = isset($_GET["id"]) && $_GET["id"] != "" ? $_GET["id"] : null;
		if($id == null)
		{
			header("location:/error/errno=0");
		}
		else
		{
			$arts = new Article_Collection();
			$art = $arts->getById($id);
			$art->delete();
			// Mise à jour du fichier sitemap
			Sitemap::BUILD();
			header("location:/admin/msg=DelArtOk");
		}
	}

	public function image()
	{
		$this->_view->_loginForm = $this->addPartialView("admin", "connectForm");
		$this->addJSFile("admin");
	}

	public function addimage()
	{
		$this->disableView();

		if ($_FILES['tb_image']['error'] == UPLOAD_ERR_OK)
		{
			$dst = 'images/articles/';
			//$dst = $_POST['tb_folder'];
			move_uploaded_file($_FILES['tb_image']['tmp_name'], $dst.$_FILES['tb_image']['name']);
			header("location:/admin/msg=AddImgOk");
		}
		else
		{
			header("location:/error/errno=20");
		}

	}

	public function rebuildsitemap()
	{
		Sitemap::BUILD();
		header("location:/admin/msg=BuildSitemapOk");
	}
};
return new admin_controller();
?>
